package com.example.summary.lianbiao;

/**
 * Created by wzn on 2019/4/2.
 */
public class LianBiaoGeWeiFanZhuan {

    public static void main(String[] args) {
        LianBiaoNode node = new LianBiaoNode(1, new LianBiaoNode(2, new LianBiaoNode(3
                , new LianBiaoNode(4
                , new LianBiaoNode(5, new LianBiaoNode(6
                , new LianBiaoNode(7, new LianBiaoNode(8
                , new LianBiaoNode(9, new LianBiaoNode(10, null))))))))));
        LianBiaoNode head = new LianBiaoNode(-1, node);

        LianBiaoNode newNode = fanZhuan(head, 4);
        while (null != newNode) {
            System.out.println(newNode.getI());
            newNode = newNode.getNext();
        }
    }

    public static LianBiaoNode fanZhuan(LianBiaoNode head, int x) {
        LianBiaoNode lianBiaoNode = head.getNext();

        if (null == lianBiaoNode || null == lianBiaoNode.getNext()) {
            return lianBiaoNode;
        }

        int i = 1;
        LianBiaoNode now = null;

        while (i < x && null != lianBiaoNode.getNext()) {
            now = lianBiaoNode.getNext();
            lianBiaoNode.setNext(now.getNext());
            now.setNext(head.getNext());
            head.setNext(now);
            i++;
        }
        lianBiaoNode.setNext(fanZhuan(lianBiaoNode, x));

        return now;
    }


}
